package com.cmii.sjw.department.control.jsc.model.params;

import com.cmii.sjw.department.control.jsc.model.vo.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;

/**
 * 多级跨事件单上报参数
 * @author jfh
 * @date 2025-05-26
 * @version 1.0
 * @description 多级跨事件单上报参数
 */
@Data
public class MultiSpanEventReceiverParams {
    /**
     * 应用识别码 事件单上报应用的唯一识别码（由三级平台提供）
     */
    private String sourceSystemCode;
    /**
     * 对应教委事件单类型
     * 对应本地事件类型（
     * H01131A-涉教舆情关注度
     * ，720050A1-应届大学生政策性岗位招录人数
     * ，720152-教育优待对象入学名额
     * ，H0204A1-师生传染病病例
     * ，H03101A-校外培训纠纷解决
     * ，H02571A-教育领域自然灾害(暴雨)响应）
     */
    private String LocalEventType;
    /**
     * 事件发起类型 申报类型（01-学校发起，02-高校发起，03-区县教委发起，04-市教委发起）
     */
    private String applyLevel;

    /**
     * 事件单ID 事件单的唯一标识
     */
    private String eventNum;
    /**
     * 事件单标题 事件单的标题信息
     */
    private String eventTitle;
    /**
     * 事件类型 支持3级目录，传最后一级即可，比如平安法治/城市管理/渣土车冒装
     */
    private String eventType;
    /**
     * 事件内容
     */
    private String eventContent;
    /**
     * 事件发生时间 格式为yyyy-MM-dd，如果没有事发时间可以用事件单创建时间当做事发时间
     */
    private Date happenTime;
    /**
     * 事件级别 编码：一般0；较大1；重大2；特别重大3
     */
    private String eventLevel;
    /**
     * 事发地址 如：重庆市渝北区黄山大道2号
     */
    private String eventAddress;
    /**
     * 所属区县编码 如果确定事件在某个街道发生，如：重庆市渝北区大竹林街道，则需要区县、街道编码；
     * 如果只有经纬度可通过地址服务获取区域编码。
     */
    private String belongCounty;
    /**
     * 所属街道编码
     */
    private String belongStreet;
    /**
     * 所属社区编码
     */
    private String belongCommunity;
    /**
     * 所属网格编码
     */
    private String belongGrid;
    /**
     * 经度（84坐标）
     */
    private String lon;
    /**
     * 纬度（84坐标）
     */
    private String lat;
    /**
     * 经度（2000坐标）
     */
    private String lon2000;
    /**
     * 纬度（2000坐标）
     */
    private String lat2000;
    /**
     *
     */
    private String linkAddress;
    /**
     * 办理要求
     */
    private String dealContent;
    /**
     * 事件单备注
     */
    private String remark;

    /**
     * 附件信息 倘若有附件信息，则url、fileType、attachmentType、fileName 则不能为空（支持http链接和base64两种方式）
     */
    private List<ListFileVo> listFile;
    /**
     * 诉求人姓名
     */
    private String appealName;
    /**
     * 诉求人联系方式
     */
    private String appealTel;
    /***
     * 诉求提出时间 格式为yyyy-MM-dd HH:mm:ss，如果没有诉求时间可以用创建时间当做诉求提出时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime appealTime;
    /**
     * 造成影响
     */
    private EffectsVo effects;
    /**
     * 建议处理单位
     */
    private List<SuggestDealUnitVo> suggestDealUnit;
    /**
     * 抄送单位
     */
    private List<CopyToUnitVo> copyToUnit;
    /**
     * 事件扩展字段
     */
    private List<EventExtendedFieldListVo> eventExtendedFieldList;

    /**
     * 测试标 true表示该事件单为测试事件，对于测试事件在分派时不会发往外系统的正式环境；不传或为false表示为正式事件
     */
    private Integer isTest;
    /**
     * 事件截止日期 格式为yyyy-MM-dd
     */
    private Date limitDate;

    /**
     * 历史事项单 (历史事项输出数组)
     */
    private List<TaskOrderOutPutsVo> taskOrderOutPuts;
}
